package br.com.viewcar.entity;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Table(name = "EQUIPAMENTO", schema = "CHECKROTA")
public class Equipamento implements Serializable {

	private static final long serialVersionUID = 8874174751737518998L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name="SEQ_EQUIPAMENTO", nullable = false)
	private Integer id;

	@Column(name="DSC_EQUIPAMENTO", nullable = false, length = 50)
	private String descricao;

	@Column(name="NUM_PORTAS", nullable = false, length = 50)
	private Integer numeroPortas;

	@Column(name="TIPO_EQUIPAMENTO", nullable = false)
	private Integer tipoEquipamento;

	@Column(name="NUM_SERIAL",  nullable = false)
	private Integer numeroSerial;

	@Column(name="NUM_SERIE",  nullable = false)
	private Integer numeroSerie;

	@Temporal(TemporalType.DATE)
	@Column(name="DATA_GARANTIA", nullable = false)
	private Date dataGarantia;

	@Temporal(TemporalType.DATE)
	@Column(name="DATA_CADASTRO")
	private Date dataCadastro;

	@Temporal(TemporalType.DATE)
	@Column(name="DATA_COMPRA", nullable = false)
	private Date dataCompra;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Integer getNumeroPortas() {
		return numeroPortas;
	}

	public void setNumeroPortas(Integer numeroPortas) {
		this.numeroPortas = numeroPortas;
	}

	public Integer getTipoEquipamento() {
		return tipoEquipamento;
	}

	public void setTipoEquipamento(Integer tipoEquipamento) {
		this.tipoEquipamento = tipoEquipamento;
	}

	public Integer getNumeroSerial() {
		return numeroSerial;
	}

	public void setNumeroSerial(Integer numeroSerial) {
		this.numeroSerial = numeroSerial;
	}

	public Integer getNumeroSerie() {
		return numeroSerie;
	}

	public void setNumeroSerie(Integer numeroSerie) {
		this.numeroSerie = numeroSerie;
	}

	public Date getDataCadastro() {
		return dataCadastro;
	}

	public void setDataCadastro(Date dataCadastro) {
		this.dataCadastro = dataCadastro;
	}

	public Date getDataGarantia() {
		return dataGarantia;
	}

	public void setDataGarantia(Date dataGarantia) {
		this.dataGarantia = dataGarantia;
	}

	public Date getDataCompra() {
		return dataCompra;
	}

	public void setDataCompra(Date dataCompra) {
		this.dataCompra = dataCompra;
	}

	public int hashCode() {

		int result = 1;
		result = 31 * result + ((id == null) ? 0 : id.hashCode());
		result = 31 * result + ((descricao == null) ? 0 : descricao.hashCode());

		return result;
	}

	public boolean equals(Object obj) {

		if (this == obj)
			return true;

		if (obj == null)
			return false;

		if (getClass() != obj.getClass())
			return false;

		Equipamento other = (Equipamento) obj;

		return ((id == null && other.id == null) || (id != null && id.equals(other.id))) &&
			((descricao == null && other.descricao == null) || (descricao != null && descricao.equals(other.descricao)));
	}
}